﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VemTransporte.Models.Basica;
using VemTransporte.Models.Fachada;

namespace VemTransporte.Views.UsuarioTransporte
{
    public partial class MenuUsuarioLinha : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                Usuario usuarioLogado = (Usuario)Session["UsuarioLogado"];

                if (usuarioLogado != null)
                {

                    ImgFotoUsuario.ImageUrl = string.Format("/UsuarioFotos/{0}.jpg", usuarioLogado.Id);

                    List<Linha> linhasUsuario = null;
                    if ((usuarioLogado.UsuarioLinhas != null) && (usuarioLogado.UsuarioLinhas.Count > 0))
                    {
                        linhasUsuario = new List<Linha>();
                        foreach (UsuarioLinha item in usuarioLogado.UsuarioLinhas)
                        {
                            linhasUsuario.Add(item.Linha);
                        }
                    }
                    GridViewLinha.DataSource = linhasUsuario;
                    GridViewLinha.DataBind();

                    if (usuarioLogado.Nome.IndexOf(" ") > 0)
                    {
                        LabelNomeUsuario.Text = usuarioLogado.Nome.Substring(0, usuarioLogado.Nome.IndexOf(" "));
                    }
                    else
                    {
                        LabelNomeUsuario.Text = usuarioLogado.Nome;
                    }

                    IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();

                    DropDownListLinhas.Items.Add("Selecione uma linha!");

                    foreach (Linha linha in linhas)
                    {

                        DropDownListLinhas.Items.Add(linha.Numero + " - " + linha.Nome);
                    }
                }
                else
                {
                    //Usuario não encontrado 
                    Response.Redirect("Login.aspx", false);
                }

            }
        }

        protected void GridViewLinha_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            e.Cancel = true;
        }

        protected void GridViewLinha_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            Usuario usuarioLogado = (Usuario)Session["UsuarioLogado"];

            if (usuarioLogado != null)
            {
                ErrorMessage.Text = "";

                if (e.CommandName == "excluir")
                {
                    try
                    {
                        string numeroLinha = e.CommandArgument.ToString();

                        foreach (UsuarioLinha item in usuarioLogado.UsuarioLinhas.ToList())
                        {
                            if (item.Linha.Numero.Equals(numeroLinha))
                            {
                                usuarioLogado.UsuarioLinhas.Remove(item);

                                break;
                            }
                        }

                        List<Linha> linhasUsuario = null;
                        if ((usuarioLogado.UsuarioLinhas != null) && (usuarioLogado.UsuarioLinhas.Count > 0))
                        {
                            linhasUsuario = new List<Linha>();
                            foreach (UsuarioLinha item in usuarioLogado.UsuarioLinhas)
                            {
                                linhasUsuario.Add(item.Linha);
                            }
                        }

                        Session["UsuarioLogado"] = usuarioLogado;

                        GridViewLinha.DataSource = linhasUsuario;
                        GridViewLinha.DataBind();

                        ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(Page), "MSG", "javascript:alert('Excluido com Sucesso! Salve as alterações para que ocorra efeito.');", true);

                    }
                    catch (Exception ex)
                    {
                        ErrorMessage.Text = ex.Message;
                    }
                }
            }
            else
            {
                //Usuario não encontrado 
                Response.Redirect("Login.aspx", false);
            }
        }

        protected void Adicionar_Click(object sender, EventArgs e)
        {
            Usuario usuarioLogado = (Usuario)Session["UsuarioLogado"];

            if (usuarioLogado != null)
            {

                IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();
                Linha l = linhas[DropDownListLinhas.SelectedIndex - 1];

                if (l != null)
                {
                    UsuarioLinha usuLinha = new UsuarioLinha();

                    usuLinha.Linha = l;

                    usuarioLogado.AddUsuarioLinha(usuLinha);
                }

                List<Linha> linhasUsuario = null;
                if ((usuarioLogado.UsuarioLinhas != null) && (usuarioLogado.UsuarioLinhas.Count > 0))
                {
                    linhasUsuario = new List<Linha>();
                    foreach (UsuarioLinha item in usuarioLogado.UsuarioLinhas)
                    {
                        linhasUsuario.Add(item.Linha);
                    }
                }

                Session["UsuarioLogado"] = usuarioLogado;

                GridViewLinha.DataSource = linhasUsuario;
                GridViewLinha.DataBind();
            }
            else
            {
                //Usuario não encontrado 
                Response.Redirect("Login.aspx", false);
            }
        }

        protected void GridViewLinha_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string numeroLinha = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "numero"));


                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).CommandArgument = numeroLinha;

                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).Attributes.Add("onClick",
                       " return confirm('Confirma o cancelamento da linha nº " + numeroLinha + "?');");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Usuario usuarioLogado = (Usuario)Session["UsuarioLogado"];

            if (usuarioLogado != null)
            {
                try
                {
                    Fachada.Instance.Salvar(usuarioLogado);

                    Session["UsuarioLogado"] = usuarioLogado;

                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Confimado", "alert('Salvo com sucesso!'); window.location='MenuUsuario.aspx';", true);
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }
            }
            else
            {
                //Usuario não encontrado 
                Response.Redirect("Login.aspx", false);
            }
        }
    }
}